home *** CD-ROM | disk | FTP | other *** search
/ STraTOS 1997 April & May / STraTOS 1 - 1997 April & May.iso / CD01 / INTERNET / SITES / VOLANT / FASTPRIN.ZIP / SOURCES / IMP_TGA.S next >
Encoding:
Text File  |  1995-03-16  |  32.6 KB  |  1,739 lines

  1.  
  2.     OPT    O+
  3.  
  4. POUCE_X EQU  (8*360)
  5. POUCE_Y EQU (11*360)+48
  6.  
  7.     SECTION TEXT
  8.  
  9. *******************************************************************************
  10.  
  11. * RECUPERATION DE LA LIGNE DE COMMANDE
  12.     LEA    4(SP),A5
  13.     MOVE.L    (A5),A5
  14.     MOVE.B    $80(A5),D0
  15.     AND.L    #$FF,D0    
  16.     LEA    $81(A5),A5    * DEBUT DU NOM DU PROGRAMME
  17.     CLR.B    (A5,D0.W)
  18.  
  19.     MOVE.L    A7,A6
  20.     MOVE.L    4(A6),A6
  21.     MOVE.L    $C(A6),D0
  22.     ADD.L    $14(A6),D0
  23.     ADD.L    $1C(A6),D0
  24.     ADD.L    #$100,D0
  25.     MOVE.L    D0,-(SP)
  26.     MOVE.L    A6,-(SP)
  27.     CLR.W    -(SP)
  28.     MOVE.W    #$4A,-(SP)
  29.     TRAP    #1
  30.     LEA    12(SP),SP
  31.     TST.W    D0
  32.     BNE    INIT_ERROR
  33.  
  34.     CLR.L    -(SP)
  35.     MOVE.W    #32,-(SP)
  36.     TRAP    #1
  37.     ADDQ.L    #6,SP
  38.     MOVE.L    D0,-(SP)    
  39.  
  40.     LEA    PRESENTATION_TXT,A0
  41.     BSR    PRINTF
  42.  
  43. * ON AFFICHE LE NOM DU FICHIER
  44.     LEA    FICHIER_TXT,A0
  45.     BSR    PRINTF
  46.     MOVE.L    A5,A0
  47.     BSR    PRINTF
  48.     BSR    FCR
  49.  
  50. * ON L'OUVRE
  51.     MOVE.L    A5,FNAME
  52.     MOVE.L    A5,A0
  53.     LEA    HANDLE1,A1
  54.     BSR    FOPEN
  55.  
  56. * ON LIT L'ENTETE
  57.     LEA    TGA,A0
  58.     LEA    HANDLE1,A1
  59.     MOVEQ.L    #18,D0
  60.     BSR    FREAD
  61.  
  62. * ON POMPE LES DIMENSIONS
  63.     BSR    GET_TGA_INFO
  64.  
  65. * ON RESERVE TGA_X*3 OCTETS POUR CHARGER CHAQUE LIGNE DE L'IMAGE
  66.     CLR.L    D0
  67.     MOVE.W    TGA_X,D0
  68.     MOVE.W    D0,D1    * MULU.W    #3,D0
  69.     ADD.W    D0,D0
  70.     ADD.W    D1,D0
  71.     MOVE.L    D0,TAILLE_BUFFER
  72.     LEA    ADR_BUFFER,A1
  73.     BSR    MALLOC
  74.  
  75.  
  76. * ON LES AFFICHE AINSI QUE LA TAILLE CALCULEE DU FICHIER
  77.     LEA    TAILLE_IMG_TXT,A0
  78.     BSR    PRINTF
  79.     CLR.L    D0
  80.     MOVE.W    TGA_X,D0
  81.     BSR    FNUMBER
  82.     LEA    X_TXT,A0
  83.     BSR    PRINTF
  84.     CLR.L    D0
  85.     MOVE.W    TGA_Y,D0
  86.     BSR    FNUMBER
  87.     LEA    SOIT_TXT,A0
  88.     BSR    PRINTF
  89.  
  90. * ON CALCULE LA TAILLE
  91.     CLR.L    D0
  92.     MOVE.W    TGA_X,D0
  93.     MULU.W    TGA_Y,D0
  94.     MOVE.L    D0,D1
  95.     ADD.L    D0,D1
  96.     ADD.L    D1,D0
  97.     ADD.L    #18,D0
  98.     BSR    FNUMBER
  99.     LEA    OCTETS_TXT,A0
  100.     BSR    PRINTF
  101.  
  102.  
  103. * ON DEMANDE LE POSITIONEMENT DE L'IMAGE SUR LE PAPIER
  104.     BSR    KEY_POS
  105.  
  106. * ON DEMANDE LA TAILLE DE L'IMAGE SUR LE PAPIER
  107.     BSR    KEY_TAILLE
  108.  
  109. * ON CALCULE LES DIMENSIONS FINALES
  110.     BSR    DIMENSIONS_RASTER
  111.  
  112. * ON AFFICHE LES COORDONNEES RASTERS PURES
  113.     LEA    TAILLE_RAS_TXT,A0
  114.     BSR    PRINTF
  115.     CLR.L    D0
  116.     MOVE.W    RASTER_X,D0
  117.     BSR    FNUMBER
  118.     LEA    X_TXT,A0
  119.     BSR    PRINTF
  120.     CLR.L    D0
  121.     MOVE.W    RASTER_Y,D0
  122.     BSR    FNUMBER
  123.     LEA    TAILLE_PAP_TXT,A0
  124.     BSR    PRINTF
  125.  
  126. * ON DEMANDE LA COURBE DE CONSTRASTE/LUMIERE
  127.     BSR    KEY_CURVE
  128.  
  129. * ON DEMANDE LA METHODE A UTILISER
  130.     BSR    KEY_RENDU
  131.  
  132. * ON FERME LE FICHIER IMAGE
  133.     LEA    HANDLE1,A1
  134.     BSR    FCLOSE
  135.  
  136. * ON IMPRIME
  137.     LEA    WAIT2_TXT,A0
  138.     BSR    PRINTF
  139.     BSR    IMPRIME_ALL
  140.  
  141. * ON QUITTE
  142.     MOVE.W    #32,-(SP)
  143.     TRAP    #1
  144.     ADDQ.L    #6,SP
  145. INIT_ERROR:
  146.  
  147.     CLR.W    -(SP)
  148.     TRAP    #1
  149.  
  150. *******************************************************************************
  151.  
  152. GET_TGA_INFO:    LEA    TGA,A0
  153.     CLR.W    D0
  154.     MOVE.B    13(A0),D0
  155.     LSL.W    #8,D0
  156.     MOVE.B    12(A0),D0    *D0=TAILLE X
  157.     MOVE.W    D0,TGA_X
  158.     SUBQ.W    #1,D0
  159.     MOVE.W    D0,TGA_X1
  160.  
  161.  
  162.     CLR.W    D1
  163.     MOVE.B    15(A0),D1
  164.     LSL.W    #8,D1
  165.     MOVE.B    14(A0),D1    *D1=TAILLE Y
  166.     MOVE.W    D1,TGA_Y
  167.     SUBQ.W    #1,D1
  168.     MOVE.W    D1,TGA_Y1
  169.  
  170.     RTS
  171.  
  172. *******************************************************************************
  173.  
  174. FOPEN:    CLR.W    -(SP)
  175.     MOVE.L    A5,-(SP)
  176.     MOVE.W    #$3D,-(SP)
  177.     TRAP    #1
  178.     ADDQ.L    #8,SP
  179.     MOVE.W    D0,(A1)
  180.     TST.W    D0
  181.     BMI.S    INIT_ERROR
  182.     RTS
  183.  
  184. *******************************************************************************
  185.  
  186. FREAD:    MOVE.L    A0,-(SP)
  187.     MOVE.L    D0,-(SP)
  188.     MOVE.W    (A1),-(SP)
  189.     MOVE.W    #$3F,-(SP)
  190.     TRAP    #1
  191.     LEA    12(SP),SP
  192.     TST.W    D0
  193.     BMI.S    INIT_ERROR
  194.     RTS
  195.  
  196. *******************************************************************************
  197.  
  198. FCLOSE:    MOVE.W    (A1),-(SP)
  199.     MOVE.W    #$3E,-(SP)
  200.     TRAP    #1
  201.     ADDQ.L    #4,SP
  202.     RTS
  203.  
  204. *******************************************************************************
  205.  
  206. MALLOC:    MOVE.L    D0,-(SP)
  207.     MOVE.W    #$48,-(SP)
  208.     TRAP    #1
  209.     ADDQ.L    #6,SP
  210.     MOVE.L    D0,(A1)
  211.     TST.L    D0
  212.     BEQ    INIT_ERROR
  213.     BMI    INIT_ERROR
  214.     RTS
  215.  
  216. *******************************************************************************
  217.  
  218. PRINTF:    MOVE.L    A0,-(SP)
  219.     MOVE.W    #9,-(SP)
  220.     TRAP    #1
  221.     ADDQ.L    #6,SP
  222.     RTS
  223.  
  224. *******************************************************************************
  225.  
  226. WAIT_KEY:    MOVE.W    #7,-(SP)
  227.     TRAP    #1
  228.     ADDQ.L    #2,SP
  229.     RTS
  230.  
  231. *******************************************************************************
  232.  
  233. FNUMBER:    LEA    NUMBER+15,A0
  234.     LEA    CONVERT,A1
  235. .RETRY:    CLR.L    D1
  236.     DIVU.L    #10,D1:D0
  237.     MOVE.B    (A1,D1.L),-(A0)
  238.     TST.L    D0
  239.     BNE.S    .RETRY
  240.     BSR.S    PRINTF
  241.     RTS
  242.  
  243. *******************************************************************************
  244.  
  245. FCR:    LEA    CR_TXT,A0
  246.     BSR.S    PRINTF
  247.     RTS
  248.  
  249. *******************************************************************************
  250.  
  251. * ON DEMANDE LE POSITIONEMENT DE L'IMAGE SUR LE PAPIER
  252. KEY_POS:    LEA    POSITION_TXT,A0
  253.     BSR.S    PRINTF
  254. .KEY:    BSR.S    WAIT_KEY
  255. .KEY_1:    CMPI.B    #"1",D0
  256.     BNE.S    .KEY_2
  257.     CLR.W    POS_FLAG
  258.     RTS
  259. .KEY_2:    CMPI.B    #"2",D0
  260.     BNE.S    .KEY
  261.     NOT.W    POS_FLAG
  262.     RTS
  263.  
  264. *******************************************************************************
  265.  
  266. * ON DEMANDE LA TAILLE DE L'IMAGE SUR LE PAPIER
  267. KEY_TAILLE:    LEA    TAILLE_TXT,A0
  268.     BSR.S    PRINTF
  269. .KEY:    BSR.S    WAIT_KEY
  270.     SUB.B    #"0",D0
  271.     BMI.S    .KEY
  272.     CMPI.B    #10,D0
  273.     BPL.S    .KEY
  274.     AND.W    #$FF,D0
  275.     MOVE.W    D0,TAILLE_FLAG
  276.     RTS
  277.  
  278. *******************************************************************************
  279.  
  280. * ON DEMANDE LA TAILLE DE L'IMAGE SUR LE PAPIER
  281. KEY_RENDU:    LEA    METHODE_TXT,A0
  282.     BSR    PRINTF
  283. .KEY:    BSR    WAIT_KEY
  284. .KEY_1:    CMPI.B    #"3",D0
  285.     BNE.S    .KEY_2
  286.     BSR.S    KEY_MOTIF
  287.     BSR    RENDU1
  288.     RTS
  289. .KEY_2:    CMPI.B    #"1",D0
  290.     BNE.S    .KEY_3
  291.     BSR.S    KEY_MOTIF
  292.     BSR    RENDU2
  293.     RTS
  294. .KEY_3:    CMPI.B    #"2",D0
  295.     BNE.S    .KEY
  296.     BSR    RENDU3
  297.     RTS
  298.  
  299. *******************************************************************************
  300.  
  301. KEY_MOTIF:    LEA    MOTIF_TXT,A0
  302.     BSR    PRINTF
  303. .KEY:    BSR    WAIT_KEY
  304. .KEY_1:    CMPI.B    #"1",D0
  305.     BNE.S    .KEY_2
  306.     MOVE.L    #COURBE,ADR_MOTIF
  307.     RTS
  308. .KEY_2:    CMPI.B    #"2",D0
  309.     BNE.S    .KEY_3
  310.     MOVE.L    #POINT,ADR_MOTIF
  311.     RTS
  312. .KEY_3:    CMPI.B    #"3",D0
  313.     BNE.S    .KEY_4
  314.     MOVE.L    #CERCLE,ADR_MOTIF
  315.     RTS
  316. .KEY_4:    CMPI.B    #"4",D0
  317.     BNE.S    .KEY
  318.  
  319.     MOVE.L    #ALEATOIRE,ADR_MOTIF
  320.  
  321.  
  322.     MOVE.W    #254,D2
  323.  
  324.     MOVE.W    #17,-(SP)
  325.     TRAP    #14
  326.     ADDQ.L    #2,SP
  327.     MOVE.B    D0,ALEATOIRE
  328.  
  329. .BCL0:
  330.     MOVE.W    #17,-(SP)
  331.     TRAP    #14
  332.     ADDQ.L    #2,SP
  333.  
  334.     LEA    ALEATOIRE,A0
  335.     MOVE.W    #254,D1
  336.     SUB.W    D2,D1
  337. .BCL1:    CMP.B    (A0)+,D0
  338.     BEQ.S    .BCL0
  339.     DBRA.W    D1,.BCL1
  340. .CT2:    MOVE.B    D0,(A0)
  341.     DBRA.W    D2,.BCL0
  342.     RTS
  343. *******************************************************************************
  344.  
  345. * ON CALCULE LES DIMENSIONS FINALES
  346. DIMENSIONS_RASTER:
  347. DBG:
  348.     TST.W    POS_FLAG
  349.     BNE.S    .VER
  350.  
  351. .HOR:    BSR.S    .HORIZONTALE1
  352.     BSR    .RATIO1
  353.     CLR.L    D0
  354.     MOVE.W    RASTER_Y,D0
  355.     DIVU.W    #48,D0
  356.     MULU.W    #48,D0
  357.     MOVE.W    D0,RASTER_Y
  358.     BSR    .RATIO2
  359.     RTS
  360.  
  361. .VER:    BSR.S    .VERTICALE1
  362.     BSR    .RATIO1
  363.     MOVE.W    RASTER_X,D0
  364.     DIVU.W    #48,D0
  365.     MULU.W    #48,D0
  366.     MOVE.W    D0,RASTER_X
  367.     BSR    .RATIO2
  368.     RTS
  369.  
  370. .HORIZONTALE1:    MOVE.W    #POUCE_X,RASTER_X
  371. .H1:    CLR.L    D0
  372.     MOVE.W    TGA_Y,D0
  373.     MULU.W    RASTER_X,D0
  374.     DIVU.W    TGA_X,D0
  375.     MOVE.W    D0,RASTER_Y
  376.     CMPI.W    #POUCE_Y,RASTER_Y
  377.     BHI.S    .H2
  378.     RTS
  379. .H2:    MOVE.W    #POUCE_Y,RASTER_Y
  380.     CLR.L    D0
  381.     MOVE.W    TGA_X,D0
  382.     MULU.W    RASTER_Y,D0
  383.     DIVU.W    TGA_Y,D0
  384.     MOVE.W    D0,RASTER_X
  385.     RTS
  386.  
  387. .VERTICALE1:    MOVE.W    #POUCE_Y,RASTER_X
  388. .V1:    CLR.L    D0
  389.     MOVE.W    TGA_Y,D0
  390.     MULU.W    RASTER_X,D0
  391.     DIVU.W    TGA_X,D0
  392.     MOVE.W    D0,RASTER_Y
  393.     CMPI.W    #POUCE_X,RASTER_Y
  394.     BHI.S    .V2
  395.     RTS
  396. .V2:    MOVE.W    #POUCE_X,RASTER_Y
  397.     CLR.L    D0
  398.     MOVE.W    TGA_X,D0
  399.     MULU.W    RASTER_Y,D0
  400.     DIVU.W    TGA_Y,D0
  401.     MOVE.W    D0,RASTER_X
  402.     RTS
  403.  
  404. .RATIO1:    CLR.L    D0
  405.     MOVE.W    RASTER_X,D0
  406.     DIVU.W    TAILLE_FLAG,D0
  407.     MOVE.W    D0,RASTER_X
  408.     CLR.L    D0
  409.     MOVE.W    RASTER_Y,D0
  410.     DIVU.W    TAILLE_FLAG,D0
  411.     MOVE.W    D0,RASTER_Y
  412.     RTS
  413.  
  414. .RATIO2:    AND.W    #$FFF0,RASTER_X
  415.     AND.W    #$FFF0,RASTER_Y
  416.     RTS
  417.  
  418. *******************************************************************************
  419.  
  420. RENDU1:
  421.     LEA    CALCUL_TXT,A0
  422.     BSR    PRINTF
  423.  
  424.     BSR    ALL_MALLOC
  425.  
  426. * ON RESERVE RASTER_X*4 OCTETS POUR LES ERREURS
  427.     CLR.L    D0
  428.     MOVE.W    RASTER_X,D0
  429.     ADDQ.W    #1,D0
  430.     LSL.W    #2,D0    * MULU.W    #4,D0
  431.     MOVE.L    D0,TAILLE_ERREUR
  432.     LEA    ADR_ERREUR,A1
  433.     BSR    MALLOC
  434.  
  435.  
  436. * ON RESERVE TGA_X*32 OCTETS POUR LA CONVERTION
  437.     CLR.L    D0
  438.     MOVE.W    TGA_X,D0
  439.     LSL.L    #5,D0    * MULU.W    #32,D0
  440.     MOVE.L    D0,TAILLE_CONVERT
  441.     LEA    ADR_CONVERT,A1
  442.     BSR    MALLOC
  443.  
  444. * ON RESERVE TGA_X*32 OCTETS POUR LES PRE-CALCULS
  445.     CLR.L    D0
  446.     MOVE.W    TGA_X,D0
  447.     LSL.W    #5,D0    * MULU.W    #32,D0
  448.     MOVE.L    D0,TAILLE_TAB_X
  449.     LEA    ADR_TAB_X,A1
  450.     BSR    MALLOC
  451.  
  452.     MOVE.L    TAILLE_ERREUR,D0
  453.     MOVE.L    ADR_ERREUR,A0
  454. .BCL0:    CLR.L    (A0)+
  455.     SUBQ.L    #4,D0
  456.     BNE.S    .BCL0
  457.  
  458.     MOVE.L    ADR_TAB_X,A0
  459.     CLR.W    D3
  460.     MOVE.W    TGA_X1,D0
  461.     MOVE.W    TGA_X,D4
  462.     MOVE.W    RASTER_X,D5
  463.     LSL.W    #4,D4
  464. .X0:    MOVE.W    #15,D1
  465. .X1:    CLR.L    D2
  466.     MOVE.W    D3,D2
  467.     MULU.W    D5,D2
  468.     DIVU.W    D4,D2
  469.     LSL.W    #2,D2
  470.  
  471.     MOVE.W    D2,(A0)+
  472.  
  473.     ADDQ.W    #1,D3
  474.     DBRA.W    D1,.X1
  475.     DBRA.W    D0,.X0
  476.  
  477.  
  478.     MOVE.W    TGA_Y1,D0
  479. .Y:    BSR    AFF_NUMERO_LIGNE
  480.     BSR    LOAD_A_LINE
  481.     BSR    M1_CONVERT_A_LINE
  482.     BSR    M1_COMPRESS_A_LINE
  483.     DBRA.W    D0,.Y
  484.  
  485.     BSR    M1_VIDE_BUFFER
  486.  
  487.     RTS
  488.  
  489. *******************************************************************************
  490.  
  491. RENDU2:    LEA    CALCUL_TXT,A0
  492.     BSR    PRINTF
  493.  
  494.     BSR    ALL_MALLOC
  495.  
  496. * ON RESERVE (RASTER_X/16)*4 OCTETS POUR LES ERREURS
  497.     CLR.L    D0
  498.     MOVE.W    RASTER_X,D0
  499.     ADDQ.W    #1,D0
  500.     LSL.W    #2,D0    * MULU.W    #16,D0
  501.     MOVE.L    D0,TAILLE_ERREUR
  502.     LEA    ADR_ERREUR,A1
  503.     BSR    MALLOC
  504.  
  505. * ON RESERVE TGA_X*2 OCTETS POUR LES PRE-CALCULS
  506.     CLR.L    D0
  507.     MOVE.W    TGA_X,D0
  508.     LSL.W    #1,D0    * MULU.W    #2,D0
  509.     MOVE.L    D0,TAILLE_TAB_X
  510.     LEA    ADR_TAB_X,A1
  511.     BSR    MALLOC
  512.  
  513.     MOVE.L    TAILLE_ERREUR,D0
  514.     MOVE.L    ADR_ERREUR,A0
  515. .BCL0:    CLR.L    (A0)+
  516.     SUBQ.L    #4,D0
  517.     BNE.S    .BCL0
  518.  
  519.     MOVE.L    ADR_TAB_X,A0
  520.     CLR.W    D3
  521.     MOVE.W    TGA_X1,D0
  522.     MOVE.W    RASTER_X,D4
  523.     MOVE.W    TGA_X,D5
  524.     LSR.W    #4,D4
  525. .X0:    CLR.L    D2
  526.     MOVE.W    D3,D2
  527.     MULU.W    D4,D2
  528.     DIVU.W    D5,D2
  529.     LSL.W    #2,D2
  530.     MOVE.W    D2,(A0)+
  531.     ADDQ.W    #1,D3
  532.     DBRA.W    D0,.X0
  533.  
  534.     MOVE.W    TGA_Y1,D0
  535. .Y:    BSR    AFF_NUMERO_LIGNE
  536.     BSR    LOAD_A_LINE
  537.     BSR    M2_COMPRESS_A_LINE
  538.     DBRA.W    D0,.Y
  539.  
  540.     BSR    M2_VIDE_BUFFER
  541.  
  542.     RTS
  543.  
  544. *******************************************************************************
  545.  
  546. RENDU3:    LEA    CALCUL_TXT,A0
  547.     BSR    PRINTF
  548.  
  549.     BSR    ALL_MALLOC
  550.  
  551. * ON RESERVE RASTER_X*4 OCTETS POUR LES ERREURS
  552.     CLR.L    D0
  553.     MOVE.W    RASTER_X,D0
  554.     ADDQ.W    #1,D0
  555.     LSL.L    #2,D0
  556.     MOVE.L    D0,TAILLE_ERREUR
  557.     LEA    ADR_ERREUR,A1
  558.     BSR    MALLOC
  559.  
  560. * ON RESERVE TGA_X*2 OCTETS POUR LES PRE-CALCULS
  561.     CLR.L    D0
  562.     MOVE.W    TGA_X,D0
  563.     LSL.W    #1,D0    * MULU.W    #2,D0
  564.     MOVE.L    D0,TAILLE_TAB_X
  565.     LEA    ADR_TAB_X,A1
  566.     BSR    MALLOC
  567.  
  568.     MOVE.L    TAILLE_ERREUR,D0
  569.     MOVE.L    ADR_ERREUR,A0
  570. .BCL0:    CLR.L    (A0)+
  571.     SUBQ.L    #4,D0
  572.     BNE.S    .BCL0
  573.  
  574.     MOVE.L    ADR_TAB_X,A0
  575.     CLR.W    D3
  576.     MOVE.W    RASTER_X,D0
  577.     SUBQ.W    #1,D0
  578.     MOVE.W    TGA_X,D4
  579.     MOVE.W    RASTER_X,D5
  580.  
  581. .X0:    CLR.L    D2
  582.     MOVE.W    D3,D2
  583.     MULU.W    D4,D2
  584.     DIVU.W    D5,D2
  585.     MULU.W    #3,D2
  586.     MOVE.W    D2,(A0)+
  587.     ADDQ.W    #1,D3
  588.     DBRA.W    D0,.X0
  589.  
  590.     MOVE.W    TGA_Y1,D0
  591. .Y:
  592.     BSR.S    AFF_NUMERO_LIGNE
  593.     BSR.S    LOAD_A_LINE
  594.     BSR    M3_EXPAND_A_LINE
  595.     DBRA.W    D0,.Y
  596.  
  597.     RTS
  598.  
  599. *******************************************************************************
  600.  
  601. AFF_NUMERO_LIGNE:
  602.  
  603.     MOVE.L    D0,-(SP)
  604.  
  605.     MOVE.W    D0,D7
  606.  
  607.     LEA    PROGRESSION_TXT,A0
  608.     BSR    PRINTF
  609.  
  610.     CLR.L    D0
  611.     MOVE.W    D7,D0
  612.     BSR    FNUMBER
  613.  
  614.     LEA    SUR_TXT,A0
  615.     BSR    PRINTF
  616.  
  617.     CLR.L    D0
  618.     MOVE.W    TGA_Y1,D0
  619.     BSR    FNUMBER
  620.  
  621.  
  622.     MOVE.L    (SP)+,D0
  623.  
  624.     RTS
  625.  
  626. *******************************************************************************
  627.  
  628. ALL_MALLOC:
  629.  
  630.  
  631. * ON RESERVE RASTER_X*RASTER_Y*256 BITS POUR CALCULER L'IMAGE RASTER
  632.     CLR.L    D0
  633.     MOVE.W    RASTER_X,D0
  634.     MULU.W    RASTER_Y,D0
  635.     LSR.L    #3,D0
  636.     MOVE.L    D0,TAILLE_RASTER
  637.     LEA    ADR_RASTER,A1
  638.     BSR    MALLOC
  639.  
  640.  
  641. *    MOVE.L    $44E.W,ADR_RASTER
  642. *    MOVE.W    #640,RASTER_X
  643. *    MOVE.W    #480,RASTER_Y
  644.  
  645.     MOVE.L    ADR_RASTER,PTR_RASTER
  646.     RTS
  647.  
  648. *******************************************************************************
  649.  
  650. LOAD_A_LINE:    MOVE.L    D0,-(SP)
  651.     MOVE.L    ADR_BUFFER,A0
  652.     LEA    HANDLE1,A1
  653.     MOVE.L    TAILLE_BUFFER,D0
  654.     BSR    FREAD
  655.     MOVE.L    (SP)+,D0
  656.     RTS
  657.  
  658. *******************************************************************************
  659.  
  660. M1_CONVERT_A_LINE:
  661.     MOVE.L    D0,-(SP)
  662.  
  663.     MOVE.L    ADR_BUFFER,A0
  664.     MOVE.L    ADR_CONVERT,A1
  665.     LEA    COURBE_NG3,A3
  666.  
  667.     CLR.L    D0
  668.     MOVE.W    TGA_X,D0
  669.     LSL.W    #1,D0
  670.     MOVE.L    D0,-(SP)
  671.  
  672.     MOVE.L    ADR_MOTIF,A5
  673.  
  674.     MOVE.W    TGA_X1,D0
  675.     CLR.L    D6
  676.     CLR.W    D5
  677. .X:
  678.     LEA    2(A1),A6
  679.  
  680.     MOVE.B    (A0)+,D6
  681.  
  682.     *CLR.W    D5
  683.     MOVE.B    (A0)+,D5
  684.     ADD.W    D5,D6
  685.  
  686.     *CLR.W    D5
  687.     MOVE.B    (A0)+,D5
  688.     ADD.W    D5,D6
  689.  
  690.     MOVE.W    2(A3,D6.W*4),D5
  691.     MOVE.W    (A3,D6.W*4),D6
  692.  
  693.     *DIVU.W    #3,D6
  694.  
  695.     *MOVE.W    D6,D5
  696.     *CLR.W    D6
  697.     *SWAP    D6
  698.  
  699.     *MOVE.L    ADR_MOTIF,A2
  700.     MOVE.L    A5,A2
  701.  
  702.     MOVE.W    #15,D1
  703. .YY:    CLR.W    D3
  704.     MOVE.W    #$8000,D4
  705.     MOVE.W    #15,D2
  706. .XX:    MOVE.B    (A2)+,D7
  707.     CMP.B    D7,D5
  708.     BHI.S    .CT
  709.     OR.W    D4,D3
  710. .CT:    LSR.W    #1,D4
  711.     DBRA.W    D2,.XX
  712.     MOVE.W    D3,(A1)
  713.     *ADD.W    TGA_X,A1
  714.     *ADD.W    TGA_X,A1
  715.     ADD.L    (SP),A1
  716.     DBRA.W    D1,.YY
  717.     MOVE.L    A6,A1
  718.     DBRA.W    D0,.X
  719.  
  720.     CLR.L    (SP)+
  721.     MOVE.L    (SP)+,D0
  722.     RTS
  723.  
  724.  
  725. *******************************************************************************
  726.  
  727. M1_COMPRESS_A_LINE:
  728.  
  729.     MOVE.L    D0,-(SP)
  730.  
  731.     MOVE.L    ADR_CONVERT,A0
  732.  
  733.     CLR.L    D1
  734.     MOVE.W    TGA_Y1,D1
  735.     SUB.W    D0,D1
  736.     LSL.W    #4,D1
  737.  
  738.     MOVE.W    #15,D0
  739. .YY:
  740.     MOVE.L    D1,D2
  741.     MULU.W    RASTER_Y,D2
  742.     MOVE.W    TGA_Y,D5
  743.     LSL.W    #4,D5
  744.     DIVU.W    D5,D2
  745.  
  746.     CMP.W    LIGNE_BUF_ACTUELLE,D2
  747.     BEQ.S    .CT1
  748.  
  749. *BUFFER ERREUR A VIDER SUR IMAGE FINALE
  750.     MOVE.W    D2,LIGNE_BUF_ACTUELLE
  751.  
  752.     BSR.S    M1_VIDE_BUFFER
  753.  
  754.     MOVE.L    A2,PTR_RASTER
  755.  
  756. .CT1:
  757. *BALANCER DANS ERREUR LA LIGNE RASTER
  758.     MOVE.W    TGA_X1,D7
  759.     MOVE.L    ADR_ERREUR,A1
  760.     MOVE.L    ADR_TAB_X,A6
  761. .XX2:    MOVE.W    #$8000,D5
  762.     MOVE.W    #15,D6
  763. .ZZ2:    MOVE.W    (A6)+,D2
  764.  
  765.     MOVE.W    (A0),D4
  766.     AND.W    D5,D4
  767.     BEQ.S    .NO_POINT
  768.     ADDQ.W    #1,2(A1,D2.W)
  769. .NO_POINT:
  770.     ADDQ.W    #1,(A1,D2.W)
  771.     LSR.W    #1,D5
  772.     DBRA.W    D6,.ZZ2
  773.     ADDQ.L    #2,A0
  774.     DBRA.W    D7,.XX2
  775.  
  776.     ADDQ.W    #1,D1
  777.     DBRA.W    D0,.YY
  778.  
  779.     MOVE.L    (SP)+,D0
  780.     RTS         
  781.  
  782.  
  783.  
  784. M1_VIDE_BUFFER:
  785.     MOVE.L    PTR_RASTER,A2
  786.  
  787.     MOVE.W    RASTER_X,D7
  788.     LSR.W    #4,D7
  789.     SUBQ.W    #1,D7
  790.     MOVE.L    ADR_ERREUR,A1
  791. .XX1:    MOVE.W    #15,D3
  792.     MOVE.W    #$8000,D2
  793.     CLR.W    (A2)
  794. .ZZ1:
  795.     MOVE.W    (A1),D5
  796. *    BNE.S    .FILL
  797. *POINT NON REMPLI
  798. *    MOVE.W    #1,D5
  799. *
  800. *    illegal
  801.  
  802. .FILL:    CLR.L    D6
  803.     MOVE.W    2(A1),D6
  804.     DIVU.W    D5,D6
  805.  
  806.     CMPI.W    #1,D6
  807.     BNE.S    .0
  808.     OR.W    D2,(A2)
  809.  
  810. .0:    SWAP    D6
  811.  
  812. *REPARTITION DE L'ERREUR
  813.     LSR.W    #1,D6
  814.     CLR.W    (A1)+
  815.     MOVE.W    D6,(A1)+
  816.     ADD.W    D6,2(A1)
  817.  
  818.     LSR.W    #1,D2
  819.     DBRA.W    D3,.ZZ1
  820.     ADDQ.L    #2,A2
  821.     DBRA.W    D7,.XX1
  822.  
  823.     RTS
  824.  
  825. *******************************************************************************
  826.  
  827. M2_COMPRESS_A_LINE:
  828.     MOVE.L    D0,-(SP)
  829.  
  830.     MOVE.W    TGA_Y1,D2
  831.     SUB.W    D0,D2
  832.     MOVE.W    RASTER_Y,D4
  833.     LSR.W    #4,D4
  834.     MULU.W    D4,D2
  835.     DIVU.W    TGA_Y,D2
  836.  
  837.     CMP.W    LIGNE_BUF_ACTUELLE,D2
  838.     BEQ.S    .CT1
  839.     MOVE.W    D2,LIGNE_BUF_ACTUELLE
  840.     BSR.S    M2_VIDE_BUFFER
  841.  
  842. .CT1:    MOVE.L    ADR_BUFFER,A0
  843.     MOVE.L    ADR_ERREUR,A1
  844.     MOVE.L    ADR_TAB_X,A6
  845.     LEA    COURBE_NG1,A3    
  846.  
  847.     MOVE.W    TGA_X1,D0
  848. .X:    MOVE.W    (A6)+,D2
  849.     CLR.W    D1
  850.     ADDQ.W    #3,(A1,D2.W)
  851.     MOVE.B    (A0)+,D1
  852.     MOVE.B    (A3,D1.W),D1
  853.     ADD.W    D1,2(A1,D2.W)
  854.     MOVE.B    (A0)+,D1
  855.     MOVE.B    (A3,D1.W),D1
  856.     ADD.W    D1,2(A1,D2.W)
  857.     MOVE.B    (A0)+,D1
  858.     MOVE.B    (A3,D1.W),D1
  859.     ADD.W    D1,2(A1,D2.W)
  860.     DBRA.W    D0,.X
  861.  
  862.     MOVE.L    (SP)+,D0
  863.     RTS
  864.  
  865. M2_VIDE_BUFFER:
  866.     MOVE.L    D0,-(SP)
  867.  
  868.     MOVE.L    ADR_ERREUR,A0
  869.     MOVE.L    PTR_RASTER,A1
  870.  
  871.     MOVE.W    RASTER_X,D0
  872.     LSR.W    #4,D0
  873.     SUBQ.W    #1,D0
  874.  
  875.     MOVE.W    RASTER_X,D7
  876.     LSR.W    #3,D7
  877.     MOVE.W    D7,-(SP)
  878. .X:
  879.     LEA    2(A1),A6
  880.  
  881.     CLR.L    D6
  882.     MOVE.W    2(A0),D6
  883.     DIVU.W    (A0),D6
  884.  
  885.     CLR.W    (A0)+
  886.     MOVE.W    D6,D5
  887.     SWAP    D6
  888.     MOVE.W    D6,(A0)+
  889.  
  890.     MOVE.L    ADR_MOTIF,A2
  891.     MOVE.W    #15,D1
  892. .YY:    CLR.W    D3
  893.     MOVE.W    #$8000,D4
  894.     MOVE.W    #15,D2
  895. .XX:    MOVE.B    (A2)+,D7
  896.     CMP.B    D7,D5
  897.     BHI.S    .CT
  898.     OR.W    D4,D3
  899. .CT:    LSR.W    #1,D4
  900.     DBRA.W    D2,.XX
  901.     MOVE.W    D3,(A1)
  902.     *MOVE.W    RASTER_X,D7
  903.     *LSR.W    #3,D7
  904.     *ADD.W    D7,A1
  905.     ADD.W    (SP),A1
  906.     DBRA.W    D1,.YY
  907.  
  908.     MOVE.L    A6,A1
  909.     DBRA.W    D0,.X
  910.  
  911.  
  912.     *MOVE.W    RASTER_X,D7
  913.     *LSR.W    #3,D7
  914.     MOVE.W    (SP)+,D7
  915.     MULU.W    #15,D7
  916.     ADD.W    D7,A1
  917.     MOVE.L    A1,PTR_RASTER
  918.  
  919.     MOVE.L    (SP)+,D0
  920.  
  921.     RTS
  922.  
  923. *******************************************************************************
  924.  
  925. M3_EXPAND_A_LINE:
  926.  
  927. .RETRY:    MOVE.L    D0,-(SP)
  928.  
  929.     MOVE.L    PTR_RASTER,A1
  930.  
  931.     MOVE.L    ADR_ERREUR,A0
  932.     MOVE.L    ADR_BUFFER,A2
  933.     MOVE.L    ADR_TAB_X,A3
  934.     LEA    COURBE_NG1,A4
  935.  
  936.     CLR.W    D3
  937.     CLR.W    D6
  938.  
  939.     MOVE.W    RASTER_X,D0
  940.     LSR.W    #4,D0
  941.     SUBQ.W    #1,D0
  942. .X:    MOVE.W    #15,D1
  943.     MOVE.W    #$8000,D2
  944.     MOVE.W    #-1,(A1)
  945. .XX:
  946.     MOVE.W    (A3)+,D7
  947.     CLR.W    D4    * SOMME NUANCE
  948.     MOVE.B    (A2,D7.W),D4    * NUANCE 1
  949.     MOVE.B    (A4,D4.W),D4
  950.     MOVE.B    1(A2,D7.W),D6    * NUANCE 2
  951.     MOVE.B    (A4,D6.W),D6
  952.     ADD.W    D6,D4
  953.     MOVE.B    2(A2,D7.W),D6    * NUANCE 3
  954.     MOVE.B    (A4,D6.W),D6
  955.     ADD.W    D6,D4
  956.  
  957.     MOVE.W    (A0),D5    * ERREUR LIGNE PRECEDENTE
  958.  
  959.     ADD.W    D4,D3
  960.     ADD.W    D5,D3
  961.     CMPI.W    #382,D3
  962.     BMI.S    .CONT
  963.     SUB.W    #765,D3    * ERREUR RESTANT
  964.     EOR.W    D2,(A1)
  965.  
  966. .CONT:    ASR.W    #1,D3
  967.     LSR.W    #1,D2
  968.     MOVE.W    D3,(A0)+
  969.  
  970.     DBRA.W    D1,.XX
  971.     ADDQ.L    #2,A1
  972.     DBRA.W    D0,.X
  973.  
  974.     MOVE.L    A1,PTR_RASTER
  975.  
  976.     MOVE.L    (SP)+,D0
  977.  
  978.     ADDQ.W    #1,LIGNE_BUF_ACTUELLE
  979.     MOVE.W    LIGNE_BUF_ACTUELLE,D3
  980.     CMP.W    RASTER_Y,D3
  981.     BEQ.S    .FIN
  982.     CLR.L    D2
  983.     MOVE.W    RASTER_Y,D2
  984.     SUB.W    D3,D2
  985.     MULU.W    TGA_Y,D2
  986.     DIVU.W    RASTER_Y,D2
  987.     CMP.W    D2,D0
  988.     BEQ    .RETRY
  989.  
  990.  
  991. .FIN:    RTS
  992.  
  993. ********************************************************************************
  994.  
  995. IMPRIME_ALL:
  996.     CLR.L    D0
  997.     MOVE.L    ADR_RASTER,PTR_RASTER
  998.     MOVE.W    RASTER_Y,D0
  999.     TST.W    POS_FLAG
  1000.     BEQ.S    .CT0
  1001.  
  1002.     MOVE.W    RASTER_X,D0
  1003.     CLR.L    D7
  1004.     MOVE.W    RASTER_X,D7
  1005.     LSR.W    #3,D7
  1006.     MULU.W    RASTER_Y,D7
  1007.     ADD.L    D7,PTR_RASTER
  1008.  
  1009. .CT0:    DIVU.W    #48,D0
  1010.     SUBQ.W    #1,D0
  1011. .Y:
  1012.     MOVE.W    D0,-(SP)
  1013.  
  1014.     LEA    NB_POINT+2,A0
  1015.     MOVE.L    PTR_RASTER,A1
  1016.  
  1017.     TST.W    POS_FLAG
  1018.     BNE.S    .VERTICALE
  1019.  
  1020. .HORIZONTALE:
  1021.     CLR.L    D6
  1022.     MOVE.W    RASTER_X,D6
  1023.     LSR.W    #3,D6
  1024.     MOVE.W    D6,D0
  1025.     LSR.W    #1,D0
  1026.     SUBQ.W    #1,D0
  1027.  
  1028. .NEXT_WORD:    MOVE.W    #15,D1
  1029.     MOVE.W    #$8000,D7
  1030. .BCL0:    MOVE.L    A1,A2
  1031.     MOVE.W    #5,D2
  1032. .BCL1:    CLR.B    D5
  1033.     MOVE.W    #7,D3
  1034. .BCL2:
  1035.     LSL.B    #1,D5
  1036.     MOVE.W    (A2),D4
  1037.     AND.W    D7,D4
  1038.     BEQ.S    .CT
  1039.     BSET    #0,D5
  1040. .CT:
  1041.     ADD.W    D6,A2
  1042.     DBRA.W    D3,.BCL2
  1043.     MOVE.B    D5,(A0)+
  1044.     DBRA.W    D2,.BCL1
  1045.     LSR.W    #1,D7
  1046.     DBRA.W    D1,.BCL0
  1047.  
  1048.     ADDQ.W    #2,A1
  1049.     DBRA.W    D0,.NEXT_WORD
  1050.  
  1051.     MULU.W    #48,D6
  1052.     ADD.L    D6,PTR_RASTER
  1053.  
  1054.     BRA.S    .SUITE
  1055. .VERTICALE:
  1056.     MOVE.W    RASTER_Y,D6
  1057.     CLR.L    D7
  1058.     MOVE.W    RASTER_X,D7
  1059.     LSR.W    #3,D7
  1060.     SUBQ.W    #1,D6
  1061. .BCL:
  1062.     SUB.L    D7,A1
  1063.     MOVE.L    (A1),(A0)+
  1064.     MOVE.W    4(A1),(A0)+
  1065.     DBRA.W    D6,.BCL
  1066.  
  1067.     ADDQ.L    #6,PTR_RASTER
  1068.  
  1069. .SUITE:
  1070.     MOVE.L    A0,D1
  1071.     MOVE.L    A0,D0
  1072.     LEA    NB_POINT,A0
  1073.     SUB.L    A0,D1
  1074.     SUBQ.W    #2,D1
  1075.     DIVU.W    #6,D1
  1076.     MOVE.B    D1,(A0)+
  1077.     LSR.W    #8,D1
  1078.     MOVE.B    D1,(A0)+
  1079.  
  1080.     LEA    PRINT_LIGNE,A0
  1081.     SUB.L    #PRINT_LIGNE,D0
  1082.     BSR.S    IMPRIME
  1083.  
  1084.     LEA    SAUT_DE_LIGNE,A0
  1085.     MOVEQ.L    #5,D0
  1086.     BSR.S    IMPRIME
  1087.  
  1088.     MOVE.W    (SP)+,D0
  1089.     DBRA.W    D0,.Y
  1090.  
  1091. .WT_FIN:    TST.W    INT_PRINTER
  1092.     BNE.S    .WT_FIN
  1093.  
  1094.     RTS
  1095.  
  1096. ********************************************************************************
  1097.  
  1098. IMPRIME:    TST.W    INT_PRINTER
  1099.     BNE.S    IMPRIME
  1100.     MOVE.L    A0,POS_BUFFER
  1101.     MOVE.L    D0,RES_BUFFER
  1102.     BSR.S    SET_INT
  1103.     BSR    WAIT_PRINTER
  1104.     BSR.S    ENVOIE_UN_CHAR
  1105.     RTS
  1106.  
  1107. **********************
  1108. *** REGLAGE DES IT ***
  1109. **********************
  1110.  
  1111. SET_INT:    MOVE.W    SR,-(SP)
  1112.     BSR    PRN_INIT
  1113.     MOVE.W    #$2700,SR
  1114.     MOVE.L    $100.W,EX_TIMER
  1115.     MOVE.L    #PRINTER,$100.W
  1116.     BSET    #0,$FFFFFA09.W
  1117.     BSET    #0,$FFFFFA15.W
  1118.     MOVE.W    #-1,INT_PRINTER
  1119.     MOVE.W    (SP)+,SR
  1120.     *NOT.L    $FFFF9800.W
  1121.     RTS
  1122.  
  1123. CLR_INT:    MOVE.W    SR,-(SP)
  1124.     BSR    PRN_END
  1125.     MOVE.W    #$2700,SR
  1126.     BCLR    #0,$FFFFFA09.W
  1127.     BCLR    #0,$FFFFFA15.W
  1128.     MOVE.L    EX_TIMER,$100.W
  1129.     CLR.W    INT_PRINTER
  1130.     MOVE.W    (SP)+,SR
  1131.     *NOT.L    $FFFF9800.W
  1132.     RTS
  1133. ***********************
  1134. *** ROUTINE SOUS IT ***
  1135. ***********************
  1136.  
  1137. PRINTER:    *NOT.L    $FFFF9800.W
  1138.     BSR.S    ENVOIE_UN_CHAR
  1139.     BCLR    #0,$FFFFFA11.W
  1140.     *NOT.L    $FFFF9800.W
  1141.     RTE
  1142.  
  1143. *********************************************************
  1144. *** ON EXPEDIE UN CARACTERE DE LA FILE A L'IMPRIMANTE ***
  1145. *********************************************************
  1146.  
  1147. ENVOIE_UN_CHAR:    MOVE.L    A0,-(SP)
  1148.     MOVE.L    D0,-(SP)
  1149.     MOVE.L    POS_BUFFER,A0
  1150.     MOVE.B    (A0)+,D0
  1151.     MOVE.L    A0,POS_BUFFER
  1152.     SUBQ.L    #1,RES_BUFFER
  1153.     BNE.S    .CONT
  1154.     BSR.S    CLR_INT
  1155. .CONT:    BSR.S    PRN_RUN
  1156.     MOVE.L    (SP)+,D0
  1157.     MOVE.L    (SP)+,A0
  1158.     RTS
  1159.  
  1160.  
  1161. **************************************
  1162. *** INITIALISATION DE L'IMPRIMANTE ***
  1163. **************************************
  1164. PRN_INIT:    MOVE.L    A0,-(SP)
  1165.     MOVE.L    D0,-(SP)
  1166.     LEA    $FFFF8800.W,A0
  1167. * ON PREND L'ETAT DU REG 14
  1168.     MOVE.B    #14,(A0)
  1169.     MOVE.B    (A0),EX_REG14
  1170. * ON PREND L'ETAT DU REG 7
  1171.     MOVE.B    #7,(A0)
  1172.     MOVE.B    (A0),D0
  1173.     MOVE.B    D0,EX_REG7
  1174. * CENTRONIC EN SORTIE
  1175.     OR.B    #128,D0
  1176. * ON BALANCE LE NOUVEAU REGISTRE 7
  1177.     MOVE.B    D0,2(A0)
  1178.     MOVE.L    (SP)+,D0
  1179.     MOVE.L    (SP)+,A0
  1180.     RTS
  1181.  
  1182. ***************************************
  1183. *** ON ENVOIE UNE  SÉRIE DE DONNÉES ***
  1184. ***************************************
  1185. PRN_RUN:    LEA    $FFFF8800.W,A0
  1186. * ON BALANCE LA DONNÉE SUR LE PORT: REGISTRE 15
  1187.     MOVE.B    #15,(A0)
  1188.     MOVE.B    D0,2(A0)
  1189. * ON PREND L'ETAT DU REG 14
  1190.     MOVE.B    #14,(A0)
  1191.     MOVE.B    (A0),D0
  1192. * CENTRONIC EN SORTIE
  1193.     AND.B    #223,D0
  1194. * ON BALANCE LE NOUVEAU REGISTRE 14
  1195.     REPT    2
  1196.     MOVE.B    D0,2(A0)
  1197.     ENDR
  1198. * CENTRONIC EN SORTIE
  1199.     OR.B    #32,D0
  1200. * ON BALANCE LE NOUVEAU REGISTRE 14
  1201.     MOVE.B    D0,2(A0)
  1202.     RTS
  1203.  
  1204. ********************************
  1205. *** ON RETABLIT L'IMPRIMANTE ***
  1206. ********************************
  1207. PRN_END:    MOVE.L    A0,-(SP)
  1208.     LEA    $FFFF8800.W,A0
  1209. * ON BALANCE L'ANCIEN REGISTRE 7
  1210.     MOVE.B    #7,(A0)
  1211.     MOVE.B    EX_REG7,2(A0)
  1212. * ON BALANCE L'ANCIEN REGISTRE 14
  1213.     MOVE.B    #14,(A0)
  1214.     MOVE.B    EX_REG14,2(A0)
  1215.     MOVE.L    (SP)+,A0
  1216.     RTS
  1217.  
  1218. **************************
  1219. *** IMPRIMANTE PRETE ? ***
  1220. **************************
  1221. WAIT_PRINTER:    BTST    #0,$FFFFFA01.W
  1222.     BNE.S    WAIT_PRINTER
  1223.     RTS
  1224. ********************************************************************************
  1225. KEY_CURVE:
  1226.     LEA    CURVE_TXT,A0
  1227.     BSR    PRINTF
  1228. .RETRY:    BSR    WAIT_KEY
  1229.  
  1230. .KEY_1:    CMPI.B    #"1",D0
  1231.     BNE.S    .KEY_2
  1232.     BSR    AUTO_CURVE
  1233.     RTS
  1234.  
  1235. .KEY_2:    CMPI.B    #"2",D0
  1236.     BNE.S    .KEY_3
  1237.     MOVE.W    #0,P000
  1238.     MOVE.W    #85,P085
  1239.     MOVE.W    #170,P170
  1240.     MOVE.W    #255,P255
  1241.     BSR    CURVE_64BIT
  1242.     RTS
  1243.  
  1244. .KEY_3:    CMPI.B    #"3",D0
  1245.     BNE.S    .KEY_4
  1246.     MOVE.W    #0,P000
  1247.     MOVE.W    #115,P085
  1248.     MOVE.W    #190,P170
  1249.     MOVE.W    #255,P255
  1250.     BSR    CURVE_64BIT
  1251.     RTS
  1252.  
  1253.  
  1254. .KEY_4:    CMPI.B    #"4",D0
  1255.     BNE.S    .KEY_5
  1256.     MOVE.W    #0,P000
  1257.     MOVE.W    #115,P085
  1258.     MOVE.W    #140,P170
  1259.     MOVE.W    #255,P255
  1260.     BSR    CURVE_64BIT
  1261.     RTS
  1262.  
  1263. .KEY_5:    CMPI.B    #"5",D0
  1264.     BNE.S    .KEY_6
  1265.     MOVE.W    #0,P000
  1266.     MOVE.W    #100,P085
  1267.     MOVE.W    #155,P170
  1268.     MOVE.W    #255,P255
  1269.     BSR    CURVE_64BIT
  1270.     RTS
  1271.  
  1272. .KEY_6:    CMPI.B    #"6",D0
  1273.     BNE.S    .KEY_7
  1274.     MOVE.W    #0,P000
  1275.     MOVE.W    #70,P085
  1276.     MOVE.W    #185,P170
  1277.     MOVE.W    #255,P255
  1278.     BSR    CURVE_64BIT
  1279.     RTS
  1280.  
  1281. .KEY_7:    CMPI.B    #"7",D0
  1282.     BNE.S    .KEY_8
  1283.     MOVE.W    #0,P000
  1284.     MOVE.W    #55,P085
  1285.     MOVE.W    #200,P170
  1286.     MOVE.W    #255,P255
  1287.     BSR    CURVE_64BIT
  1288.     RTS
  1289.  
  1290. .KEY_8:    CMPI.B    #"8",D0
  1291.     BNE.S    .KEY_9
  1292.     MOVE.W    #0,P000
  1293.     MOVE.W    #0,P085
  1294.     MOVE.W    #255,P170
  1295.     MOVE.W    #255,P255
  1296.     BSR    CURVE_64BIT
  1297.     RTS
  1298.  
  1299. .KEY_9:    CMPI.B    #"9",D0
  1300.     BNE    .RETRY
  1301.     MOVE.W    #255,P000
  1302.     MOVE.W    #170,P085
  1303.     MOVE.W    #85,P170
  1304.     MOVE.W    #0,P255
  1305.     BSR    CURVE_64BIT
  1306.     RTS
  1307.  
  1308. AUTO_CURVE:
  1309.     LEA    WAIT1_TXT,A0
  1310.     BSR    PRINTF
  1311.  
  1312.     MOVE.L    FNAME,A0
  1313.     LEA    HANDLE2,A1
  1314.     BSR    FOPEN
  1315. * ON LIT L'ENTETE
  1316.     LEA    TGA,A0
  1317.     LEA    HANDLE2,A1
  1318.     MOVEQ.L    #18,D0
  1319.     BSR    FREAD
  1320.  
  1321.     MOVE.W    TGA_Y1,D0
  1322.     CLR.L    D5
  1323.     CLR.L    D6
  1324.     CLR.L    D7
  1325. .Y:    MOVE.L    D0,-(SP)
  1326.     MOVE.L    ADR_BUFFER,A0
  1327.     LEA    HANDLE2,A1
  1328.     MOVE.L    TAILLE_BUFFER,D0
  1329.     BSR    FREAD
  1330.     MOVE.L    (SP)+,D0
  1331.     MOVE.L    ADR_BUFFER,A0
  1332.     MOVE.W    TGA_X1,D1
  1333. .X:    CLR.W    D2
  1334.     CLR.W    D3
  1335.     MOVE.B    (A0)+,D2
  1336.     MOVE.B    (A0)+,D3
  1337.     ADD.W    D3,D2
  1338.     MOVE.B    (A0)+,D3
  1339.     ADD.W    D3,D2
  1340. .F0TO85:    CMPI.W    #256,D2
  1341.     BPL.S    .F85TO170
  1342.     ADDQ.L    #1,D5
  1343.     BRA.S    .CT
  1344. .F85TO170:    CMPI.W    #512,D2
  1345.     BPL.S    .F170TO255
  1346.     ADDQ.L    #1,D6
  1347.     BRA.S    .CT
  1348. .F170TO255:    ADDQ.L    #1,D7
  1349. .CT:    DBRA.W    D1,.X
  1350.     DBRA.W    D0,.Y
  1351.  
  1352. * ON FERME LE FICHIER IMAGE
  1353.     LEA    HANDLE2,A1
  1354.     BSR    FCLOSE
  1355.  
  1356.     MOVE.L    D5,D4
  1357.     ADD.L    D6,D4
  1358.     ADD.L    D7,D4
  1359.  
  1360.     CLR.L    D3
  1361.     MULU.L    #255,D5
  1362.     DIVU.L    D4,D3:D5
  1363.  
  1364.     CLR.L    D3
  1365.     MULU.L    #255,D6
  1366.     DIVU.L    D4,D3:D6
  1367.  
  1368. *    CLR.L    D3
  1369. *    MULU.L    #255,D7
  1370. *    DIVU.L    D4,D3:D7
  1371.  
  1372.     MOVE.W    #0,P000
  1373.  
  1374.     MOVE.W    D5,P085
  1375.  
  1376.     MOVE.W    D5,P170
  1377.     ADD.W    D6,P170
  1378.  
  1379.     MOVE.W    #255,P255
  1380.  
  1381.     BSR.S    CURVE_64BIT
  1382.     RTS
  1383. ********************************************************************************
  1384. * COURBE Y=AX^3+BX^2+CX+D
  1385. * EN FONCTION DE Y(000) Y(085) Y(170) Y(255)
  1386. CURVE_64BIT:
  1387. * COEFFICIENT D
  1388.     CLR.L    D0
  1389.     MOVE.W    P000,D0
  1390.     MOVE.L    D0,COEF_D
  1391. * COEFFICIENT C
  1392.     MOVE.W    P000,D0
  1393.     EXT.L    D0
  1394.     MULS.W    #-11,D0
  1395.  
  1396.     MOVE.W    P085,D1
  1397.     EXT.L    D1
  1398.     MULS.W    #18,D1
  1399.  
  1400.     MOVE.W    P170,D2
  1401.     EXT.L    D2
  1402.     MULS.W    #-9,D2
  1403.  
  1404.     MOVE.W    P255,D3
  1405.     EXT.L    D3
  1406.     ASL.L    #1,D3
  1407.  
  1408.     MOVE.L    D0,D4
  1409.     ADD.L    D1,D4
  1410.     ADD.L    D2,D4
  1411.     ADD.L    D3,D4
  1412.     MOVE.L    D4,COEF_C
  1413.  
  1414. * COEFFICIENT B
  1415.     MOVE.W    P000,D0
  1416.     EXT.L    D0
  1417.     MULS.W    #-7,D0
  1418.  
  1419.     MOVE.W    P085,D1
  1420.     EXT.L    D1
  1421.     MULS.W    #8,D1
  1422.  
  1423.     MOVE.W    P170,D2
  1424.     EXT.L    D2
  1425.     NEG.L    D2
  1426.  
  1427.     MOVE.L    COEF_C,D3
  1428.     NEG.L    D3 
  1429.  
  1430.     MOVE.L    D0,D4
  1431.     ADD.L    D1,D4
  1432.     ADD.L    D2,D4
  1433.     ADD.L    D3,D4
  1434.     MOVE.L    D4,COEF_B
  1435.  
  1436. * COEFFICIENT A
  1437.     MOVE.W    P000,D0
  1438.     EXT.L    D0
  1439.     MULS.L    #-24,D0
  1440.  
  1441.     MOVE.W    P085,D1
  1442.     EXT.L    D1
  1443.     MULS.L    #24,D1
  1444.  
  1445.     MOVE.L    COEF_B,D2
  1446.     MULS.L    #-6,D2
  1447.  
  1448.     MOVE.L    COEF_C,D3
  1449.     MULS.L    #-4,D3
  1450.  
  1451.     MOVE.L    D0,D4
  1452.     ADD.L    D1,D4
  1453.     ADD.L    D2,D4
  1454.     ADD.L    D3,D4
  1455.     MOVE.L    D4,COEF_A
  1456.  
  1457.     MOVE.L    COEF_A,D0
  1458.     ASR.L    #3,D0
  1459.     MOVE.L    D0,COEF_A
  1460.  
  1461.     MOVE.L    COEF_B,D0
  1462.     MULS.L    #510,D0
  1463.     ASR.L    #3,D0
  1464.     MOVE.L    D0,COEF_B
  1465.  
  1466.     MOVE.L    COEF_C,D0
  1467.     MULS.L    #28900,D0
  1468.     ASR.L    #3,D0
  1469.     MOVE.L    D0,COEF_C
  1470.  
  1471.     MOVE.L    COEF_D,D0
  1472.     MULS.L    #14739000/8,D0
  1473.     MOVE.L    D0,COEF_D
  1474.  
  1475.     MOVE.L    #14739000/8,DENOMINATEUR
  1476.  
  1477.     LEA    COURBE_NG3,A0
  1478.     LEA    COURBE_NG1,A1
  1479.     CLR.L    D1
  1480.     MOVE.W    #255,D0
  1481. .BCL:
  1482.     MOVE.L    D1,D2
  1483.  
  1484.     MOVE.L    D1,D3
  1485.     MULS.L    D1,D3
  1486.  
  1487.     MOVE.L    D3,D4
  1488.     MULS.L    D1,D4
  1489.  
  1490.     MULS.L    COEF_A,D4
  1491.     MULS.L    COEF_B,D3
  1492.     MULS.L    COEF_C,D2
  1493.  
  1494.     MOVE.L    COEF_D,D5
  1495.     ADD.L    D4,D5
  1496.     ADD.L    D3,D5
  1497.     ADD.L    D2,D5
  1498.     ADD.L    #14739000/16,D5
  1499.     TST.L    D5
  1500.     BPL.S    .T1
  1501.     CLR.W    D5
  1502.     BRA.S    .CT
  1503. .T1:    CLR.L    D6
  1504.     DIVS.L    DENOMINATEUR,D6:D5
  1505.  
  1506.     CMPI.W    #256,D5
  1507.     BMI.S    .T2
  1508.     MOVE.W    #255,D5
  1509.     BRA.S    .CT
  1510.  
  1511. .T2:    AND.W    #$00FF,D5
  1512.  
  1513. .CT:    CLR.W    (A0)+
  1514.     MOVE.W    D5,(A0)+
  1515.     MOVE.W    #1,(A0)+
  1516.     MOVE.W    D5,(A0)+
  1517.     MOVE.W    #2,(A0)+
  1518.     MOVE.W    D5,(A0)+
  1519.  
  1520.     MOVE.B    D5,(A1)+
  1521.  
  1522. *    MOVEM.L    D0-A6,-(SP)
  1523. *    MOVE.L    D1,D0
  1524. *    BSR    FNUMBER
  1525. *    LSR.W    #2,D5
  1526. *.BC:    MOVE.W    #"*",-(SP)
  1527. *    MOVE.W    #2,-(SP)
  1528. *    TRAP    #1
  1529. *    ADDQ.L    #4,SP
  1530. *    DBRA.W    D5,.BC
  1531. *    BSR    FCR
  1532. *    MOVEM.L    (SP)+,D0-A6
  1533.  
  1534.     ADDQ.L    #1,D1
  1535.     DBRA.W    D0,.BCL
  1536.     RTS
  1537. ********************************************************************************
  1538.     SECTION DATA
  1539. *******************************************************************************
  1540. CONVERT:    DC.B    "0123456789"
  1541.     EVEN
  1542. NUMBER:    DC.B    "***************",0
  1543.     EVEN
  1544. PRESENTATION_TXT:
  1545.     DC.B    27,"E"
  1546.     DC.B    "*************************************",13,10
  1547.     DC.B    "*** TARGA FILES FOR BJ-10 PRINTER *** PAR Simon VOLANT (C)1995",13,10
  1548.     DC.B    "*************************************",13,10,10,0
  1549.     EVEN
  1550. FICHIER_TXT:    DC.B    "FICHIER TGA: ",9,0
  1551.     EVEN
  1552. TAILLE_IMG_TXT:    DC.B    "TAILLE IMAGE: ",9,0
  1553.     EVEN
  1554. TAILLE_RAS_TXT:    DC.B    10,"TAILLE RASTER: ",9,0
  1555.     EVEN
  1556. TAILLE_PAP_TXT:    DC.B    " (MAXIMUM 2880*3960).",13,10,0
  1557.     EVEN
  1558. X_TXT:    DC.B    "x",0
  1559.     EVEN
  1560. SOIT_TXT:    DC.B    " SOIT ",0
  1561.     EVEN
  1562. OCTETS_TXT:    DC.B    " OCTETS.",13,10,0
  1563.     EVEN
  1564. POSITION_TXT:    DC.B    10,"POSITIONNEMENT DU DESSIN:",13,10
  1565.     DC.B    " 1) PORTRAIT",13,10
  1566.     DC.B    " 2) PAYSAGE",13,10,0
  1567.     EVEN
  1568. TAILLE_TXT:    DC.B    10,"TAILLE DU DESSIN:",13,10
  1569.     DC.B    " 1) 1/1 (MAXIMALE)       4) 1/4 (1/16 DU MAXIMUM) 7) 1/7 (1/49 DU MAXIMUM)",13,10
  1570.     DC.B    " 2) 1/2 (1/4 DU MAXIMUM) 5) 1/5 (1/25 DU MAXIMUM) 8) 1/8 (1/64 DU MAXIMUM)",13,10
  1571.     DC.B    " 3) 1/3 (1/9 DU MAXIMUM) 6) 1/6 (1/36 DU MAXIMUM) 9) 1/9 (1/81 DU MAXIMUM)",13,10,0
  1572.     EVEN
  1573. WAIT1_TXT:    DC.B    10,"ANALYSE DE LA LUMINOSITE DE L'IMAGE ...",13,10,0
  1574.     EVEN
  1575. WAIT2_TXT:    DC.B    13,10,10,"IMPRESSION EN COURS ...",13,10,0
  1576.     EVEN
  1577. CURVE_TXT:    DC.B    10,"CONTRASTE:",13,10
  1578.     DC.B    " 1) ADAPTE A L'IMAGE (POUR LES IMAGES SOMBRES)",13,10
  1579.     DC.B    " 2) PAS DE MODIFICATION",13,10
  1580.     DC.B    " 3) COMPENSATION DEFAUT IMPRIMANTE",13,10
  1581.      DC.B    " 4) CONTRASTE TRES FAIBLE",13,10
  1582.     DC.B    " 5) CONTRASTE FAIBLE",13,10
  1583.     DC.B    " 6) CONTRASTE FORT",13,10
  1584.     DC.B    " 7) CONTRASTE TRES FORT",13,10
  1585.     DC.B    " 8) IMAGE BINAIRE (NOIR OU BLANC)",13,10
  1586.     DC.B    " 9) INVERSE (NEGATIF)",13,10,0
  1587.     EVEN
  1588. METHODE_TXT:    DC.B    10,"PREFERENCE DE RENDU:",13,10
  1589.     DC.B    " 1) MISE A L'ECHELLE PUIS QUANTIFICATION (QUALITE  BASSE  / RAPIDE)",13,10
  1590.     DC.B    " 2) QUANTIFICATION TYPE FLOYD/STEINBERG  (QUALITE MOYENNE / MOYEN )",13,10
  1591.     DC.B    " 3) QUANTIFICATION PUIS MISE A L'ECHELLE (QUALITE  BONNE  /  LENT )",13,10,0
  1592.     EVEN
  1593. MOTIF_TXT:    DC.B    10,"MOTIF DE REMPLISSAGE:",13,10
  1594.     DC.B    " 1) COURBE FRACTALE",13,10
  1595.     DC.B    " 2) CARRE",13,10
  1596.     DC.B    " 3) DISQUE",13,10
  1597.     DC.B    " 4) ALEATOIRE",13,10,0
  1598.     EVEN
  1599. CALCUL_TXT:    DC.B    10,"CALCULS EN COURS:",13,10,0
  1600.     EVEN
  1601. PROGRESSION_TXT:
  1602.     DC.B    " ",13,"LIGNE: ",0
  1603.     EVEN
  1604. SUR_TXT:    DC.B    "/",0
  1605.     EVEN
  1606. CR_TXT:    DC.B    13,10,0
  1607.     EVEN
  1608.  
  1609. *******************************************************************************
  1610.  
  1611. COURBE:    DC.B    085,086,089,090, 101,102,105,106, 149,150,153,154, 165,166,169,170
  1612.     DC.B    084,087,088,091, 100,103,104,107, 148,151,152,155, 164,167,168,171
  1613.     DC.B    083,082,093,092, 099,098,109,108, 147,146,157,156, 163,162,173,172
  1614.     DC.B    080,081,094,095, 096,097,110,111, 144,145,158,159, 160,161,174,175
  1615.  
  1616.     DC.B    079,076,075,074, 117,116,115,112, 143,140,139,138, 181,180,179,176
  1617.     DC.B    078,077,072,073, 118,119,114,113, 142,141,136,137, 182,183,178,177
  1618.     DC.B    065,066,071,070, 121,120,125,126, 129,130,135,134, 185,184,189,190
  1619.     DC.B    064,067,068,069, 122,123,124,127, 128,131,132,133, 186,187,188,191
  1620.  
  1621.     DC.B    063,062,049,048, 047,044,043,042, 213,212,211,208, 207,206,193,192
  1622.     DC.B    060,061,050,051, 046,045,040,041, 214,215,210,209, 204,205,194,195
  1623.     DC.B    059,056,055,052, 033,034,039,038, 217,216,221,222, 203,200,199,196
  1624.     DC.B    058,057,054,053, 032,035,036,037, 218,219,220,223, 202,201,198,197
  1625.  
  1626.     DC.B    005,006,009,010, 031,028,027,026, 229,228,227,224, 245,246,249,250
  1627.     DC.B    004,007,008,011, 030,029,024,025, 230,231,226,225, 244,247,248,251
  1628.     DC.B    003,002,013,012, 017,018,023,022, 233,232,237,238, 243,242,253,252
  1629.     DC.B    000,001,014,015, 016,019,020,021, 234,235,236,239, 240,241,254,255
  1630.  
  1631. *******************************************************************************
  1632.  
  1633. POINT:    DC.B    255,196,197,198, 199,200,201,202, 203,204,205,206, 207,208,209,210
  1634.     DC.B    254,195,144,145, 146,147,148,149, 150,151,152,153, 154,155,156,211
  1635.     DC.B    253,194,143,100, 101,102,103,104, 105,106,107,108, 109,110,157,212
  1636.     DC.B    252,193,142,099, 064,065,066,067, 068,069,070,071, 072,111,158,213
  1637.  
  1638.     DC.B    251,192,141,098, 063,036,037,038, 039,040,041,042, 073,112,159,214
  1639.     DC.B    250,191,140,097, 062,035,016,017, 018,019,020,043, 074,113,160,215
  1640.     DC.B    249,190,139,096, 061,034,015,004, 005,006,021,044, 075,114,161,216
  1641.     DC.B    248,189,138,095, 060,033,014,003, 000,007,022,045, 076,115,162,217
  1642.  
  1643.     DC.B    247,188,137,094, 059,032,013,002, 001,008,023,046, 077,116,163,218
  1644.     DC.B    246,187,136,093, 058,031,012,011, 010,009,024,047, 078,117,164,219
  1645.     DC.B    245,186,135,092, 057,030,029,028, 027,026,025,048, 079,118,165,220
  1646.     DC.B    244,185,134,091, 056,055,054,053, 052,051,050,049, 080,119,166,221
  1647.  
  1648.     DC.B    243,184,133,090, 089,088,087,086, 085,084,083,082, 081,120,167,222
  1649.     DC.B    242,183,132,131, 130,129,128,127, 126,125,124,123, 122,121,168,223
  1650.     DC.B    241,182,181,180, 179,178,177,176, 175,174,173,172, 171,170,169,224
  1651.     DC.B    240,239,238,237, 236,235,234,233, 232,231,230,229, 228,227,226,225
  1652.  
  1653. *******************************************************************************
  1654.  
  1655. CERCLE:    DC.B    254,246,238,230, 222,214,206,198, 196,204,212,220, 228,236,244,252
  1656.     DC.B    250,194,186,178, 170,162,154,146, 144,152,160,168, 176,184,192,248
  1657.     DC.B    242,190,142,134, 126,118,110,102, 100,108,116,124, 132,140,188,240
  1658.     DC.B    234,182,138,098, 090,082,074,066, 064,072,080,088, 096,136,180,232
  1659.  
  1660.     DC.B    226,174,130,094, 062,054,046,038, 036,044,052,060, 092,128,172,224
  1661.     DC.B    218,166,122,086, 058,034,026,018, 016,024,032,056, 084,120,164,216
  1662.     DC.B    210,158,114,078, 050,030,014,006, 004,012,028,048, 076,112,156,208
  1663.     DC.B    202,150,106,070, 042,022,010,002, 000,008,020,040, 068,104,148,200
  1664.  
  1665.     DC.B    201,149,105,069, 041,021,009,001, 003,011,023,043, 071,107,151,203 
  1666.     DC.B    206,157,113,077, 049,029,013,005, 007,015,031,051, 079,115,159,211 
  1667.     DC.B    217,165,121,085, 057,033,025,017, 019,027,035,059, 087,123,167,219 
  1668.     DC.B    225,173,129,093, 061,053,045,037, 039,047,055,063, 095,131,175,227 
  1669.     
  1670.     DC.B    233,181,137,097, 089,081,073,065, 067,075,083,091, 099,139,183,235
  1671.     DC.B    241,189,141,133, 125,117,109,101, 103,111,119,127, 135,143,191,243 
  1672.     DC.B    249,193,185,177, 169,161,153,145, 147,155,163,171, 179,187,195,251
  1673.     DC.B    253,245,237,229, 221,213,205,197, 199,207,215,223, 231,239,247,255
  1674.  
  1675. *******************************************************************************
  1676. SAUT_DE_LIGNE:    DC.B    $1C,$43,$4A,$04,48
  1677. PRINT_LIGNE:    DC.B    $0D,$1C,$43,$42,04,04
  1678. NB_POINT:    DS.B    2
  1679. *******************************************************************************
  1680.     SECTION BSS
  1681. *******************************************************************************
  1682.     DS.B    (POUCE_X*48)/8    *(67*256)+128=17280
  1683. *******************************************************************************
  1684. ALEATOIRE:    DS.B    256
  1685. *******************************************************************************
  1686. TGA:    DS.B    18
  1687. TGA_X:    DS.W    1
  1688. TGA_Y:    DS.W    1
  1689. TGA_X1:    DS.W    1
  1690. TGA_Y1:    DS.W    1
  1691. RASTER_X:    DS.W    1
  1692. RASTER_Y:    DS.W    1
  1693. FNAME:    DS.L    1
  1694. HANDLE1:    DS.W    1
  1695. HANDLE2:    DS.W    1
  1696. POS_FLAG:    DS.W    1
  1697. TAILLE_FLAG:    DS.W    1
  1698. LIGNE_BUF_ACTUELLE:
  1699.     DS.W    1
  1700. TAILLE_BUFFER:    DS.L    1
  1701. ADR_BUFFER:    DS.L    1
  1702. TAILLE_ERREUR:    DS.L    1
  1703. ADR_ERREUR:    DS.L    1
  1704. TAILLE_RASTER:    DS.L    1
  1705. ADR_RASTER:    DS.L    1
  1706. PTR_RASTER:    DS.L    1
  1707. TAILLE_CONVERT:    DS.L    1
  1708. ADR_CONVERT:    DS.L    1
  1709. TAILLE_TAB_X:    DS.L    1
  1710. ADR_TAB_X:    DS.L    1
  1711. ADR_MOTIF:    DS.L    1
  1712. *******************************************************************************
  1713. P000:    DS.W    1
  1714. P085:    DS.W    1
  1715. P170:    DS.W    1
  1716. P255:    DS.W    1
  1717. COEF_A:    DS.L    1
  1718. COEF_B:    DS.L    1
  1719. COEF_C:    DS.L    1
  1720. COEF_D:    DS.L    1
  1721. DENOMINATEUR:    DS.L    1
  1722. COURBE_NG3:    DS.B    256*3*4
  1723. COURBE_NG1:    DS.B    256
  1724. *******************************************************************************
  1725. ***************
  1726. *** PRINTER ***
  1727. ***************
  1728. * SAUVEGARDE DES REGISTRE
  1729. EX_REG7:    DS.B    1
  1730. EX_REG14:    DS.B    1
  1731. EX_TIMER:    DS.L    1
  1732. * L'INTERRUPTION EST-ELLE VALIDE
  1733. INT_PRINTER:    DS.W    1
  1734. POS_BUFFER:    DS.L    1
  1735. RES_BUFFER;    DS.L    1
  1736.  
  1737. *******************************************************************************
  1738.  
  1739.     END